Q: 在网上看到 AAPCS 标准要求函数和中断入口时

🔍 溯源 ✍️ 花烛想迟到 | 📅 2025-05-29 | 👍 1 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/C语言 #技术/ARM体系结构 #质量/普通

原帖 | 花烛想迟到 | 2025-05-29 00:35 | 👍1 | 阅读约1

Q: 在网上看到 AAPCS 标准要求函数和中断入口时,栈指针要 8 字节对齐。但我用课程的那个 fault_demo 试了一下,看地址上感觉函数入口时 MSP 是 不是 8 字节对齐,而是 4 字节对齐,跳转也没问题。

A:有时候编译器会优化,减少压栈。函数 A 调用函数 B 时,第 1 张图因为函数 B 没有使用栈空间,所以在调用入口,编译器就没有强行使栈指针 8 字节对齐。第二张图给函数 B 多加了几行代码,编译器在识别可能函数 B 需要动用栈空间了,就给栈加 padding,使函数 B 入口时的指针对齐 8 字节了。

函数传参所遵循的正是 AAPCS 调用约定,参数如何传递的讨论见 老师,请教下,单片机启动的时候是先用内部晶振

389f9aa596c2.jpg

2046d4b7b62f.jpg


相关笔记